home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / et / et-2_2.lha / et2.2 / src / ManyOfCluster.C < prev    next >
C/C++ Source or Header  |  1990-12-04  |  2KB  |  93 lines

  1. //$ManyOfCluster$
  2.  
  3. #include "ManyOfCluster.h"
  4. #include "Buttons.h"
  5. #include "OrdColl.h"
  6.  
  7. //---- ManyOfCluster -----------------------------------------------------------
  8.  
  9. MetaImpl0(ManyOfCluster);
  10.  
  11. ManyOfCluster::ManyOfCluster(int id, VObjAlign a, Point g, Collection *cp)
  12.                         : Cluster(id, a, g, cp)
  13. {
  14.     SetFlag(eVObjVFixed);
  15. }
  16.  
  17. ManyOfCluster::ManyOfCluster(int id, VObjAlign a, Point g, VObject *va_(vop), ...)
  18.                         : Cluster(id, a, g, (Collection*)0)
  19. {
  20.     va_list ap;
  21.     va_start(ap,va_(vop));
  22.     Add(va_(vop));
  23.     SetItems(ap);
  24.     va_end(ap);
  25.     SetFlag(eVObjVFixed);
  26. }
  27.  
  28. ManyOfCluster::ManyOfCluster(int id, VObjAlign a, Point g, char *va_(cp), ...)
  29.                            : Cluster(id, a, g, (Collection*)0)
  30. {
  31.     char *t;
  32.     va_list ap;
  33.     va_start(ap,va_(cp));
  34.     list= new OrdCollection;
  35.     for (int i= 0; ; i++) {
  36.     if (i == 0)
  37.         t= va_(cp);
  38.     else
  39.         if ((t= va_arg(ap, char*)) == 0)
  40.         break; 
  41.         
  42.     list->Add(new LabeledButton(id+i, t, FALSE));
  43.     }
  44.     va_end(ap);
  45.     SetFlag(eVObjVFixed);
  46. }
  47.  
  48. void ManyOfCluster::Control(int id, int p, void *v)
  49. {
  50.     if (p == cPartToggle)
  51.     Cluster::Control(GetId(), id, v);
  52. }
  53.  
  54. void ManyOfCluster::SetItemOn(int id, bool state)
  55. {
  56.     if (Size() <= 0)
  57.     return;
  58.     Iter next(list);
  59.     VObject *dip;
  60.  
  61.     while (dip= (VObject*) next()) {
  62.     int did= dip->GetId();
  63.     if (did == id)
  64.         dip->SendDown(did, cPartSetState, (void*) state);
  65.     }
  66. }
  67.     
  68. void ManyOfCluster::SetAllItemsOn(bool state)
  69. {
  70.     if (Size() <= 0)
  71.     return;
  72.     VObject *dip;
  73.     Iter next(list);
  74.     while (dip= (VObject*) next()) 
  75.         dip->SendDown(cIdNone, cPartSetState, (void*) state);
  76. }
  77.     
  78. bool ManyOfCluster::IsItemOn(int id)
  79. {
  80.     bool isSet= FALSE;
  81.     if (Size() <= 0)
  82.     return isSet;
  83.     Iter next(list);
  84.     VObject *dip;
  85.  
  86.     while (dip= (VObject*) next()) {
  87.     int did= dip->GetId();
  88.     if (did == id)
  89.         dip->SendDown(cIdNone, cPartStateIsOn, &isSet);
  90.     }
  91.     return isSet;
  92. }
  93.